package com.mornd.gulimall.product.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.util.List;

import com.mornd.gulimall.common.core.entity.PageEntity;
import com.mornd.gulimall.common.core.validation.UpdateGroup;
import lombok.Getter;
import lombok.Setter;
import org.hibernate.validator.constraints.Range;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

/**
 * <p>
 * 商品属性
 * </p>
 *
 * @author mornd
 * @since 2023-07-23
 */
@Getter
@Setter
@TableName("pms_attr")
public class Attr extends PageEntity implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 属性id
     */
    @TableId(value = "attr_id", type = IdType.AUTO)
    @NotNull(groups = UpdateGroup.class)
    private Long attrId;

    /**
     * 属性名
     */
    @NotBlank
    private String attrName;

    /**
     * 是否需要检索[0-不需要，1-需要]
     */
    @NotNull
    @Range(min = 0, max = 1)
    private Integer searchType;

    /**
     * 属性图标
     */
    private String icon;

    /**
     * 可选值列表[用逗号分隔]
     */
    private String valueSelect;

    /**
     * 值类型 0：单个 1：多个
     */
    private Integer valueType;

    /**
     * 属性类型[0-销售属性，1-基本属性，2-既是销售属性又是基本属性]
     */
    @NotNull
    @Range(min = 0, max = 2)
    private Integer attrType;

    /**
     * 启用状态[0 - 禁用，1 - 启用]
     */
    @NotNull
    @Range(min = 0, max = 1)
    private Long enable;

    /**
     * 所属分类
     */
    @NotNull
    private Long catelogId;

    /**
     * 快速展示【是否展示在介绍上；0-否 1-是】，在sku中仍然可以调整
     */
    @NotNull
    @Range(min = 0, max = 1)
    private Integer showDesc;

    /**
     * 所属分组名称
     */
    @TableField(exist = false)
    private String groupName;

    /**
     * 所属分组id
     */
    @TableField(exist = false)
    private Long groupId;

    /**
     * 所属分类名称
     */
    @TableField(exist = false)
    private String catelogName;

    /**
     * 前端级联选择器回显的数组
     */
    @TableField(exist = false)
    private List<Long> catelogFrom;

    /**
     * 选中的值
     */
    @TableField(exist = false)
    private String value;
}
